package chapter06

object Test16_TraitSelfType {
  def main(args: Array[String]): Unit = {
//    val user = new RegisterUser("s",123)
//    user.insert()
  }
}

class User(val name:String,val password:String)
{
  private def test():Unit = {

  }

  protected  def  test1():Unit = {

  }
}
// 不想使用继承来使用其他的类的方法和属性
trait UserDao {
  // 声明自己的类型
  _:User=>
//  _:Test16_TraitSelfType=>

  def insert():Unit = {
    // 可以使用响应类型的方法
//    this.test() error
    this.test1() // 所以类似是继承关系
    println(s"insert into db:"+this.name)
  }
}

class RegisterUser(name:String,password:String)
extends User(name,password) with UserDao